<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class administradorController extends CI_Controller {

    //constructor de la clase
    function __construct() {
        parent::__construct();
        $this->load->model('usuarioModel');
    }

    public function index() {
        //guarda los contenidos en la variable data
        $data['head'] = 'pages/head';
        $data['header'] = 'pages/header';
        $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
        $data['contenido'] = 'administrador_contents/textoAdministrador';

        $this->load->view('plantilla', $data);
    }

    public function administrar_usuarios() {
        //carga los usuarios de la bd desde el modelo
        $data['usuarios'] = $this->usuarioModel->obtener_todos_usuarios();

        //guarda los contenidos en la variable data
        $data['header'] = 'pages/header';
        $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
        $data['contenido'] = 'pages/contenido';

        $data['pagina'] = 'administrarUsuarios';
        //carga la vista y se le pasa la variable que tiene los usuarios y los contenidos
        $this->load->view('plantilla', $data);
    }

    public function agregar_usuario() {
        //carga la vista para llenar los datos del nuevo usuario
        $data['header'] = 'pages/header';
        $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
        $data['contenido'] = 'administrador_contents/crearUsuarioContent';
        $data['roles'] = $this->usuarioModel->obtener_roles();

        $this->load->view('plantilla', $data);
    }

    public function crear_usuario() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('nombre', 'usuario', 'callback_UsuarioExiste');
        $this->form_validation->set_message('is_unique', 'Este %s ya esta registrado');
        $this->form_validation->set_message('required', 'El campo %s es requerido');
        //Guarda los valores del usuario ingresados por post

        if ($_POST) {
            if ($this->form_validation->run() == FALSE) {
                $data['header'] = 'pages/header';
                $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
                $data['contenido'] = 'administrador_contents/crearUsuarioContent';
                $data['roles'] = $this->usuarioModel->obtener_roles();
                $data['errores'] = validation_errors();
                $this->load->view('plantilla', $data);
            } else {
                $usuario_info = $this->input->post('usuario');

                $usuario_info['rol_id'] = $this->input->post('listaRoles');
                $usuario_id = null;

                $persona_info = $this->input->post('persona');
                $usuario_info['persona_cedula'] = $persona_info['persona_cedula'];

                //permite saber si es un usuario nuevo o es una actualizacion
                if (isset($_POST['usuario_id'])) {
                    $usuario_id = $_POST['usuario_id'];
                }
                //crea una nueva persona en caso de que no exista
                if ($this->usuarioModel->persona_existe($persona_info['persona_cedula']) == false) {
                    $this->crear_persona();
                }
                $this->usuarioModel->crear_usuario($usuario_info, $usuario_id);

                //redireccionamos hacia la lista de usuarios
                redirect('administradorController/administrar_usuarios');
            }
        }
    }

    public function UsuarioExiste() {
        $usuario_info = $this->input->post('usuario');


        if ($this->usuarioModel->usuario_existe($usuario_info['usuario_nombre'])) {
            $this->form_validation->set_message('UsuarioExiste', 'Ya existe este usuario');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    public function crear_persona() {
        //Guarda los valores de la persona ingresados por post
        $persona_info = $this->input->post('persona');

        $persona_cedula = null;

        //revisa si la pesona es nueva
        if (isset($_POST['persona_cedula'])) {
            $persona_cedula = $_POST['persona_cedula'];
        }

        //crea una nueva persona o la actualiza en caso de que exista
        $this->usuarioModel->crear_persona($persona_info, $persona_cedula);
    }

    public function eliminar_usuario($id) {
        //llamado al modelo
        $this->usuarioModel->eliminar_usuario($id);

        //redireccionamos hacia la lista de usuarios
        redirect('administradorController/administrar_usuarios');
    }

    public function actualizar_usuario($id) {

        $data['header'] = 'pages/header';
        $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
        $data['contenido'] = 'administrador_contents/actualizarUsuarioContent';

        //obtiene el id del usuario a modfificar
        $data['usuario'] = $this->usuarioModel->obtener_usuario($id);
        $data['roles'] = $this->usuarioModel->obtener_roles();

        $this->load->view('plantilla', $data);
    }
    
    public function visualizar_usuario($id){
        
        $data['header'] = 'pages/header';
        $data['menuLateral'] = 'administrador_contents/menuAdministradorContent';
        $data['contenido'] = 'administrador_contents/visualizarUsuarioContent';
        
        $data['usuario'] = $this->usuarioModel->visualizar_usuario($id);
        
        $this->load->view('plantilla', $data);
    }
}
